Method: Rugged::Tree::Builder#<<

Defined in:
ext/rugged/rugged_tree.c

#<<(entry) ⇒ nil #insert(entry) ⇒ nil

Inser a new entry into builder.

Overloads:

  • #<<(entry) ⇒ nil

    Returns:

    • (nil)
  • #insert(entry) ⇒ nil

    Returns:

    • (nil)

791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
# File 'ext/rugged/rugged_tree.c', line 791

static VALUE rb_git_treebuilder_insert(VALUE self, VALUE rb_entry)
{
  git_treebuilder *builder;
  VALUE rb_path, rb_oid, rb_attr;
  git_oid oid;
  int error;

  Data_Get_Struct(self, git_treebuilder, builder);
  Check_Type(rb_entry, T_HASH);

  rb_path = rb_hash_aref(rb_entry, CSTR2SYM("name"));
  Check_Type(rb_path, T_STRING);

  rb_oid = rb_hash_aref(rb_entry, CSTR2SYM("oid"));
  Check_Type(rb_oid, T_STRING);
  rugged_exception_check(git_oid_fromstr(&oid, StringValueCStr(rb_oid)));

  rb_attr = rb_hash_aref(rb_entry, CSTR2SYM("filemode"));
  Check_Type(rb_attr, T_FIXNUM);

  error = git_treebuilder_insert(NULL,
    builder,
    StringValueCStr(rb_path),
    &oid,
    FIX2INT(rb_attr));

  rugged_exception_check(error);
  return Qnil;
}